<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Why mingwpy? &#8212; mingwpy 0.1 documentation</title>
    
    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '0.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Background" href="background.html" />
    <link rel="prev" title="The Mingwpy project" href="index.html" />
   
  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
  
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />

  </head>
  <body role="document">
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="why-mingwpy">
<h1>Why mingwpy?<a class="headerlink" href="#why-mingwpy" title="Permalink to this headline">¶</a></h1>
<p>Python.org distributes binary installers for Python that are built with
<a class="reference internal" href="glossary.html#term-msvs"><span class="xref std std-term">MSVS</span></a>.</p>
<p>It is possible to install a version of MSVS that will build Python extensions
written in C.</p>
<p>So – why do we need mingwpy?</p>
<div class="section" id="msvs-can-be-painful-to-install-and-configure">
<h2>MSVS can be painful to install and configure<a class="headerlink" href="#msvs-can-be-painful-to-install-and-configure" title="Permalink to this headline">¶</a></h2>
<p>There is a free and relatively small MSVS version 9.0 download for compiling
Python 2.7 extensions at <a class="reference external" href="http://aka.ms/vcpython27">http://aka.ms/vcpython27</a>. Quoting from
<a class="reference external" href="https://mail.python.org/pipermail/distutils-sig/2014-September/024885.html">https://mail.python.org/pipermail/distutils-sig/2014-September/024885.html</a> :</p>
<blockquote>
<div>[...] VC9 is no longer supported by Microsoft. This means there won&#8217;t be
any improvements or bug fixes coming, and there&#8217;s no official support
offered.</div></blockquote>
<p>Compiling extensions for Python 3.5 needs MSVS version 14 (VS 2015).  The
&#8220;community edition&#8221; is a free download but takes a whopping 11GB of disk space
and takes a long time to install.</p>
</div>
<div class="section" id="scientific-software-often-needs-a-fortran-compiler">
<h2>Scientific software often needs a Fortran compiler<a class="headerlink" href="#scientific-software-often-needs-a-fortran-compiler" title="Permalink to this headline">¶</a></h2>
<p>See : <a class="reference external" href="https://github.com/numpy/numpy/wiki/Numerical-software-on-Windows">numerical software on Windows</a>.</p>
<p>MSVS does not have a Fortran compiler. This means that anyone compiling scipy
or another Python package with Fortran code will need a compiler other than
(or in addition to) MSVS.</p>
<p>To our knowledge, the only freely-available Fortran compilers on Windows are
those from the <a class="reference internal" href="glossary.html#term-gcc"><span class="xref std std-term">gcc</span></a>, and specifically, <code class="docutils literal"><span class="pre">g77</span></code> / <code class="docutils literal"><span class="pre">gfortran</span></code> from
<a class="reference internal" href="glossary.html#term-mingw"><span class="xref std std-term">mingw</span></a> and <a class="reference internal" href="glossary.html#term-mingw-w64"><span class="xref std std-term">mingw-w64</span></a>.</p>
</div>
<div class="section" id="high-performance-numerical-kernels-aren-t-written-with-msvs-in-mind">
<h2>High performance numerical kernels aren&#8217;t written with MSVS in mind<a class="headerlink" href="#high-performance-numerical-kernels-aren-t-written-with-msvs-in-mind" title="Permalink to this headline">¶</a></h2>
<p>All of the competitive open-source linear algebra libraries
(e.g. OpenBLAS) contain crucial chunks of assembly language code, and
this code is written using gcc conventions that aren&#8217;t supported by
MSVS.</p>
</div>
<div class="section" id="open-source-depends-on-free-access-to-compilers">
<h2>Open-source depends on free access to compilers<a class="headerlink" href="#open-source-depends-on-free-access-to-compilers" title="Permalink to this headline">¶</a></h2>
<p>Open source works by spreading the work of maintaining and distributing
packages across many people.  If it is hard to install the compilers then
fewer people will be able to test and fix bugs, meaning slower development and
more work in releasing packages.</p>
</div>
<div class="section" id="cross-platform-tools-make-for-easier-maintenance">
<h2>Cross-platform tools make for easier maintenance<a class="headerlink" href="#cross-platform-tools-make-for-easier-maintenance" title="Permalink to this headline">¶</a></h2>
<p>Scientific programmers overwhelmingly work on Unix, and are used to gcc c /
gfortran or clang. Few scientific programmers know MSVC. Using MSVC instead of
gcc / clang makes extra maintenance work and reduces the pool of developers
who can contribute.</p>
</div>
<div class="section" id="open-source-programmers-prefer-open-source-tools">
<h2>Open-source programmers prefer open-source tools<a class="headerlink" href="#open-source-programmers-prefer-open-source-tools" title="Permalink to this headline">¶</a></h2>
<p>Open-source programmers prefer to work with open tools.  Many of us have
switched to Python from languages like MATLAB for this reason.  It is
uncomfortable to have to use closed-source tools to build open-source
software.</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Why mingwpy?</a><ul>
<li><a class="reference internal" href="#msvs-can-be-painful-to-install-and-configure">MSVS can be painful to install and configure</a></li>
<li><a class="reference internal" href="#scientific-software-often-needs-a-fortran-compiler">Scientific software often needs a Fortran compiler</a></li>
<li><a class="reference internal" href="#high-performance-numerical-kernels-aren-t-written-with-msvs-in-mind">High performance numerical kernels aren&#8217;t written with MSVS in mind</a></li>
<li><a class="reference internal" href="#open-source-depends-on-free-access-to-compilers">Open-source depends on free access to compilers</a></li>
<li><a class="reference internal" href="#cross-platform-tools-make-for-easier-maintenance">Cross-platform tools make for easier maintenance</a></li>
<li><a class="reference internal" href="#open-source-programmers-prefer-open-source-tools">Open-source programmers prefer open-source tools</a></li>
</ul>
</li>
</ul>

<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      &copy;2015-2016, Carl Kleffner and collaborators.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.1</a>
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
      
      |
      <a href="https://github.com/mingwpy/mingwpy.github.io/edit/source/motivation.rst"
          rel="nofollow">Edit on GitHub</a>
    </div>

    
    <a href="https://github.com/mingwpy/mingwpy.github.io" class="github">
        <img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"  class="github"/>
    </a>
    

    
  </body>
</html>